Expand description
A suite of non-cryptographic hash functions for Rust.
§Example
use std::hash::{Hash, Hasher};
use fasthash::{metro, MetroHasher};
fn hash<T: Hash>(t: &T) -> u64 {
let mut s: MetroHasher = Default::default();
t.hash(&mut s);
s.finish()
}
let h = metro::hash64(b"hello world\xff");
assert_eq!(h, hash(&"hello world"));
By default, HashMap
uses a hashing algorithm selected to
provide resistance against HashDoS
attacks.
The hashing algorithm can be replaced on a per-HashMap
basis
using the HashMap::with_hasher
or
HashMap::with_capacity_and_hasher
methods.
It also cowork with HashMap
or HashSet
, act as a hash function
use std::collections::HashSet;
use fasthash::spooky::Hash128;
let mut set = HashSet::with_hasher(Hash128);
set.insert(2);
Or use RandomState<CityHash64>
with a random seed.
use std::collections::HashMap;
use fasthash::{city, RandomState};
let s = RandomState::<city::Hash64>::new();
let mut map = HashMap::with_hasher(s);
assert_eq!(map.insert(37, "a"), None);
assert_eq!(map.is_empty(), false);
map.insert(37, "b");
assert_eq!(map.insert(37, "c"), Some("b"));
assert_eq!(map[&37], "c");
Re-exports§
pub use farm::Hasher128 as FarmHasherExt;
pub use farm::Hasher64 as FarmHasher;
pub use lookup3::Hasher32 as Lookup3Hasher;
pub use mum::Hasher64 as MumHasher;
pub use murmur::Hasher32 as MurmurHasher;
pub use murmur3::Hasher32 as Murmur3Hasher;
pub use sea::Hasher64 as SeaHasher;
pub use spooky::Hasher128 as SpookyHasherExt;
pub use spooky::Hasher64 as SpookyHasher;
pub use t1ha::t1ha0;
pub use t1ha::t1ha1;
pub use t1ha::t1ha2;
pub use t1ha2::Hasher128 as T1haHasherExt;
pub use t1ha2::Hasher64 as T1haHasher;
pub use xx::Hasher64 as XXHasher;
pub use murmur2::Hasher64_x64 as Murmur2Hasher;
pub use murmur3::Hasher128_x64 as Murmur3HasherExt;
pub use city::Hasher64 as CityHasher;
pub use city::crc::Hasher128 as CityHasherExt;
pub use metro::crc::Hasher128_1 as MetroHasherExt;
pub use metro::crc::Hasher64_1 as MetroHasher;
Modules§
CityHash
, a family of hash functions for strings.FarmHash
, a family of hash functions.Lookup3
, non-cryptographic hash.MetroHash
, Exceptionally fast and statistically robust hash functionsMumHash
, Hashing functions and PRNGs based on themMurmur
, a suite of non-cryptographic hash functions that was used for hash-based lookups.Murmur2
, a suite of non-cryptographic hash functions that was used for hash-based lookups.Murmur3
, a suite of non-cryptographic hash functions that was used for hash-based lookups.SeaHash
: A bizarrely fast hash function.SpookyHash
: a 128-bit noncryptographic hash function- Fast Positive Hash, aka “Позитивный Хэш”
xxHash
- Extremely fast hash algorithm
Structs§
RandomState
provides the default state forHashMap
orHashSet
types.- Generate hash seeds
Traits§
- Hasher in the buffer mode for short key
- Fast non-cryptographic hash functions
- Fast non-cryptographic hasher
- Generate a good, portable, forever-fixed hash value
- A trait which represents the ability to hash an arbitrary stream of bytes.
- Hasher in the streaming mode without buffer